package com.cskaoyan.config;

import com.cskaoyan.dao.UserDao;
import com.cskaoyan.service.UserService;
import com.cskaoyan.service.UserServiceImpl;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

/**
 * @author stone
 * @date 2022/08/29 11:10
 */
// 把当前类当做是配置类，同时也注册为容器中的组件
@Configuration
@ComponentScan("com.cskaoyan")
//@Import()
public class SpringConfiguration {

    /**
     * @Bean 增加在方法上，使其返回值作为容器中的组件
     * @Bean 注解的value属性也可以指定组件id
     * @return 返回值类型，作为该组件在容器中的类型信息
     * 方法名：作为默认的组件id
     * 形参：获得容器中的组件
     *          → 默认按照类型来获得，容器中该类型的组件只有一个
     *          → 如果该类型组件不止一个，@Qualifier的value属性指定组件id
     */
    //UserServiceImpl这个类上的注解被我们注释掉了，我们现在使用@Bean来注册一下这个组件
    @Bean("userServiceImpl")
    public UserService userService(@Qualifier("userDaoImpl") UserDao userDao) {
        UserService userService = new UserServiceImpl();

        return userService;
    }

    /*@Bean("userServiceImpl2")
    public UserService userService2(@Qualifier("userDaoImpl") UserDao userDao) {
        UserService userService = new UserServiceImpl();
        return userService;
    }*/
}
